package com.netease.financial.base.web;

/**
 * Created by wyf on 7/18/15.
 */
public interface JSInterface {

    int JS_INTERFACE_API_LEVEL = 4;

    String PARAM_JS_TITLE = "title";

    // 设置导航栏标题
    // sync call
    // param - title - String - api level 3
    // api level : 3
    String REQUEST_JS_SET_TITLE = "nfs.setTitle";

    String PARAM_NATIVE_ACCOUNT_RESULT = "result";
    String PARAM_NATIVE_ACCOUNT_CLIENT_ID = "clientId";
    String PARAM_NATIVE_ACCOUNT_USER_ID = "userId";
    String PARAM_NATIVE_ACCOUNT_ACCESS_TOKEN = "accessToken";

    // 跳转到登陆界面
    // async call
    // api level : to determine
    // return value : result - String - success or fail
    // return value : clientId  - String
    // return value : userId  - String
    // return value : accessToken - String
    String REQUEST_JS_NAVIGATE_TO_LOGIN_SCREEN = "nfs.navigateToLoginScreen";

    // 注销登录
    // async call
    // api level : to determine
    // return value : result - String - success or fail
    String REQUEST_JS_LOGOUT = "nfs.logout";

    // 获取应用信息
    // sync call
    // api level : to determine
    // return value : clientId  - String
    // return value : userId  - String
    // return value : accessToken - String
    String REQUEST_JS_GET_USER_INFO = "nfs.getUserInfo";

    String PARAM_NATIVE_ACCOUNT_IS_LOGIN = "isLogin";

    // 判断用户是否登录
    // sync call
    // api level : to determine
    // return value : isLogin - boolean
    String REQUEST_JS_IS_USER_LOGIN = "nfs.isUserLogin";

    String PARAM_NATIVE_API_LEVEL = "apiLevel";

    // 获取js-sdk api level，增加新接口，或者改变接口功能时，可根据需要增加api level的值
    // sync all
    // api level : 2
    // return value : apiLevel - api level 2 - the api level of JS SDK, Android should be corresponding with iOS
    String REQUEST_JS_GET_FORTUNE_CLUB_API_LEVEL = "nfs.getFortuneClubApiLevel";

    String PARAM_JS_LOCK_PATTERN_USER_ID = "userId";
    String PARAM_NATIVE_LOCK_PATTERN_EXISTS = "isExists";
    String PARAM_NATIVE_LOCK_PATTERN_RESULT = "result";
    String PARAM_JS_LOCK_PATTERN_CLIENT_ID = "clientId";
    String PARAM_JS_LOCK_PATTERN_HEAD_PORTRAIT_URL = "headPortraitUrl";

    // 判某用户是否创建了锁屏图案
    // sync call
    // api level : 2
    // param : userId - String - api level 2
    // return value : isExists - boolean - api level 2
    // Determine if lock pattern exists for the user
    String REQUEST_JS_IS_LOCK_PATTERN_EXISTS = "nfs.isLockPatternExists";

    // 显示锁屏图案创建界面
    // async call
    // api level : 2
    // param : userId - String - api level 2
    // return value : result - String - use success when completed - api level 2
    String REQUEST_JS_SHOW_LOCK_PATTERN_CREATE_SCREEN = "nfs.showLockPatternCreateScreen";

    // 显示锁屏图案重置界面
    // async call
    // api level : 2
    // param : userId - String - api level 2
    // param : clientId - String - api level 2
    // param : headPortraitUrl - String - api level 2
    // return value : result - String - use success when completed
    String REQUEST_JS_SHOW_LOCK_PATTERN_RESET_SCREEN = "nfs.showLockPatternResetScreen";

    String PARAM_JS_GO_BACK_RESULT = "result";
    String REQUEST_NATIVE_GO_BACK = "goBack";

    // 当页面resume时,通知html5
    String PARAM_JS_ON_RESUME_RESULT = "result";
    String REQUEST_NATIVE_RESUME = "onResume";
    // 刷新错误页面
    String REQUEST_JS_REFRESH_PAGE = "nfs.error.refreshPage";

    // 获取网络类型
    String REQUEST_JS_GET_NETWORK_TYPE = "nfs.device.getNetworkType";

    // 设备号
    String PARAM_NATIVE_DEVICE_ID = "deviceId";

    // 获取设备的唯一识别号
    // sync call
    // return -value - deviceId
    String REQUEST_JS_GET_UNIQUE_DEVICE_ID = "nfs.device.getUniqueDeviceId";

    // 分享标题
    String PARAM_JS_SHARE_TITLE = "title";
    // 分享描述
    String PARAM_JS_SHARE_DESC = "desc";
    // 分享链接
    String PARAM_JS_SHARE_LINK = "link";
    // 分享图标
    String PARAM_JS_SHARE_IMG_URL = "imgUrl";
    // 分享类型,music、video或link，不填默认为link
    String PARAM_JS_SHARE_TYPE = "type";
    // 如果type是music或video，则要提供数据链接，默认为空
    String PARAM_JS_SHARE_DATA_URL = "dataUrl";

    String PARAM_JS_SHARE_EXTRA = "extra";

    // 分享来源种类
    String PARAM_JS_SHARE_SOURCE_TYPE = "sourceType";

    // 分享到微信朋友圈
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    // param - source - String // 分享来源，用于talking data等进行数据统计
    String REQUEST_JS_SHARE_ON_WE_CHAT_MOMENT = "nfs.share.shareOnWeChatMoment";

    // 分享给微信好友
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    // param - source - String // 分享来源，用于talking data等进行数据统计
    String REQUEST_JS_SEND_TO_WE_CHAT_FRIEND = "nfs.share.sendToWeChatFriend";

    // 分享到易信朋友圈
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    // param - source - String // 分享来源，用于talking data等进行数据统计
    String REQUEST_JS_SHARE_ON_EASY_CHAT_MOMENT = "nfs.share.shareOnEasyChatMoment";

    // 分享给易信好友
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    // param - source - String // 分享来源，用于talking data等进行数据统计
    String REQUEST_JS_SEND_TO_EASY_CHAT_FRIEND = "nfs.share.sendToEasyChatFriend";

    // 分享到新浪微博
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    // param - source - String // 分享来源，用于talking data等进行数据统计
    String REQUEST_JS_SHARE_ON_SINA_WEIBO = "nfs.share.shareOnSinaWeibo";

    // 弹出分享面板
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    // param - source - String // 分享来源，用于talking data等进行数据统计
    String REQUEST_JS_SHOW_SHARE_PANEL = "nfs.share.showSharePanel";

    int VALUE_JS_IS_HEAD_PORTRAIT_TRUE = 1;

    // 如果不设置，默认为0(非头像)
    String PARAM_JS_IMAGE_IS_HEAD_PORTRAIT = "isHeadPortrait";

    // 如果不设置，默认为9
    String PARAM_JS_IMAGE_MAX_SELECTED_COUNT = "count";
    String PARAM_NATIVE_LOCAL_IDS = "localIds";
    // 拍照或从手机相册中选图接口
    // async call
    // param - count - int - 可选择的图片的最大数量
    // isHeadPortrait - int - 是否是选择头像功能，值为1是，为选择头像，如果不设置，默认为0
    // return value - localIds - array - 返回的base64编码的图片数组
    String REQUEST_JS_CHOOSE_IMAGE = "nfs.image.chooseImage";

    // 预览图片接口
    String REQUEST_JS_PREVIEW_IMAGE = "nfs.image.previewImage";

    // 上传图片接口
    String REQUEST_JS_UPLOAD_IMAGE = "nfs.image.uploadImage";

    // 下载图片接口
    String REQUEST_JS_DOWNLOAD_IMAGE = "nfs.image.downloadImage";

    // 获取地理位置接口
    String REQUEST_JS_GET_LOCATION = "nfs.location.getLocation";

    // 查看位置接口
    String REQUEST_JS_OPEN_LOCATION = "nfs.location.openLocation";

    // 显示分享按钮
    // sync call
    String REQUEST_JS_SHOW_OPTION_MENU = "nfs.menu.showOptionMenu";

    // 隐藏分享按钮
    // sync call
    String REQUEST_JS_HIDE_OPTION_MENU = "nfs.menu.hideOptionMenu";

    // 自定义分享内容接口，当用户点击分享按钮时，从此处获取数据
    // async call
    // param - title - String // 分享标题
    // param - desc - String // 分享描述
    // param - link - String // 分享链接
    // param - imgUrl - String // 分享图标
    // param - type - String // 分享类型,music、video或link，不填默认为link
    // param - dataUrl - String // 如果type是music或video，则要提供数据链接，默认为空
    // param - extra - String // 其他自定义数据
    String REQUEST_JS_ON_MENU_SHARE = "nfs.menu.onMenuShare";

    String PARAM_PUSH_ALIAS = "alias";

    // tag数组
    String PARAM_JS_PUSH_TAGS = "tags";
    // 设置Jpush alias 和 tags 接口
    // sync call
    // param - alias - String
    // param - tags - array
    String REQUEST_JS_SET_ALIAS_AND_TAGS = "nfs.push.setAliasAndTags";

    // 恢复推送服务
    String REQUEST_JS_RESUME_PUSH = "nfs.push.resumePush";

    // 停止推送服务
    String REQUEST_JS_STOP_PUSH = "nfs.push.stopPush";

    String PARAM_NATIVE_APP_VERSION_NAME = "versionName";

    // 获取应用版本名称
    // sync call
    // return value - versionName - String
    String REQUEST_JS_GET_VERSION_NAME = "nfs.app.getVersionName";

    String PARAM_NATIVE_APP_VERSION_CODE = "versionCode";

    // 获取应用版本号
    // sync call
    // return value - versionCode - int
    String REQUEST_JS_GET_VERSION_CODE = "nfs.app.getVersionCode";

    String PARAM_JS_APP_APK_URL = "apkUrl";

    // 更新app接口
    // sync call
    // param - apkUrl - app下载地址
    String REQUEST_JS_UPDATE_APP = "nfs.app.UpdateApp";

    // 返回值为true或false
    String PARAM_NATIVE_FORCE_UPDATE = "forceUpdate";

    // 判断当前用户是否需要强制更新应用
    // sync call
    // return value - forceUpdate - boolean
    String REQUEST_JS_IS_APP_NEED_FORCE_UPDATE = "nfs.app.isAppNeedForceUpdate";

    String PARAM_NATIVE_APP_ID = "appId";

    // 获取登陆网易金融服务武器所需的appId
    // sync call
    // return value - appId - String
    String REQUEST_JS_GET_APP_ID = "nfs.app.getAppId";

    String PARAM_NATIVE_APP_SECRET = "appSecret";

    // 获取登陆网易金融服务武器所需的appSecret
    // sync call
    // return value - appSecret - String
    String REQUEST_JS_GET_APP_SECRET = "nfs.app.getAppSecret";

    // 返回值为true或false
    String PARAM_NATIVE_TIME_TIMEOUT = "timeout";
    String REQUEST_JS_IS_LOGIN_TIME_OUT = "nfs.time.isLoginTimeout";

    // 预览pdf文件
    // sync call
    // param fileUrl -  String
    String PARAM_JS_FILE_URL = "fileUrl";
    String REQUEST_JS_PREVIEW_ONLINE_FILE = "nfs.file.previewOnlineFile";

    String PARAM_JS_ACCOUNT_UNREAD_MESSAGE_COUNT = "count";

    // 设置用户未读消息数量
    // sync call
    // param - count - String
    String REQUEST_JS_SET_UNREAD_PRIVATE_MESSAGE_COUNT = "nfs.account.setUnreadPrivateMessageCount";

    // 显示键盘
    // sync call
    String REQUEST_JS_SHOW_KEYBOARD = "nfs.keyboard.showKeyboard";

    // 隐藏键盘
    // sync call
    String REQUEST_JS_HIDE_KEYBOARD = "nfs.keyboard.hideKeyboard";

    interface WebActionListener {

        /**
         * Called when the given {@link JSInterface} has a request, for example it
         * wants to select a photo.
         */
        void onRequest(JSBridge.Command cmd);

    }
}
